時間 2024/9/26 下午8:36
地點 一樣是我房間
我想不到今天的主題,不如今天就把Tofy裡的一些程式碼公開並解釋吧!
local camera = workspace.CurrentCamera
local tweensevrice = game:GetService("TweenService")
local tweeninfo = TweenInfo.new(3, Enum.EasingStyle.Linear)
local goal = {}
goal.Position = UDim2.new(0.396, 0,1.999, 0)
local tween = tweensevrice:Create(script.Parent.ScreenGui.Start, tweeninfo, goal)
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = CFrame.lookAt(Vector3.new(52.457, 9.278, 165.08), Vector3.new(49.073, 8.636, 168.704))
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 0
script.Parent.ScreenGui.Start.MouseButton1Down:Connect(function()
script.Parent.ScreenGui.Start.Click:Play()
tween:Play()
wait(1.5)
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 16
camera.CameraType = Enum.CameraType.Custom
script.Parent.ScreenGui.Object.Visible = true
script.Parent.ScreenGui.TalkToTofy.Visible = true
script.Parent.ScreenGui.Start.Visible = false
script.Parent.ScreenGui.Title.Visible = false
game.ReplicatedStorage.Dialog.Parent = workspace.Tofy.Head
end)
這段程式碼的作用為: 當玩家進入到遊戲後,先定義一個TweenService,接著將玩家的步行速度設為0,接著將玩家的攝影機模式設為scriptable(可以使用程式碼編輯方位以及旋轉角度),然後當玩家按下了一個叫做"Start"的按鈕後,播放點擊的音效,在播放Tween,等待1.5秒(Tween播放的時間的一半),將玩家的步行速度設為16,將玩家的攝影機類型設為自訂(也就是把玩家的攝影機解除鎖定),把標題文字以及按鈕的顯示關掉,把任務UI的顯示開啟,最後再把對話系統移動到Tofy的頭部。
名詞解釋
WalkSpeed 玩家的步行速度
Humanoid 儲存玩家血量、步行速度、跳躍高度、人偶類型等與玩家角色有關的資料的物件
Enum 在Roblox中的單一項目(把它想成是一個放了所有物件的所有屬性的資料庫,如果需要變更的屬性值不為數值、字串、布林值,那就需要使用到它)
CurrentCamera 本地玩家的攝影機(此指令只限於在LocalScript才可使用)
wait(數值) 等待
MouseButton1Down 按鈕被左鍵按下(這個動作是只有偵測玩家的滑鼠左鍵是否被"按下",並不是是否被"點擊",還有此屬性僅限在按鈕物件才有)
LocalPlayer 本地玩家
ReplicatedStorage 在遊戲中存放物件的Service,通常會在裡面放RemoteEvent或LocalScript(把它想成倉庫)
若上述有沒寫到的名詞多半為之前解釋過的或只是一個物件的名稱
下一段程式碼~~~
script.Parent.MouseClick:Connect(function(player)
player.PlayerGui.ScreenGui.CollectedTofu.Value = player.PlayerGui.ScreenGui.CollectedTofu.Value + 1
script.Parent.Parent.Transparency = 1
script.Parent["TADA (HQ)"]:Play()
script.Parent.Parent.CanCollide = false
script.Parent.Parent.CanTouch = false
script.Parent.MaxActivationDistance = 0
wait(0.1)
player.PlayerGui.ScreenGui.CollectBlueTofu.Text = game.StarterGui.ScreenGui.CollectBlueTofu.Text .. " ✅"
print(player.PlayerGui.ScreenGui.CollectBlueTofu.Text)
if player.PlayerGui.ScreenGui.CollectedTofu.Value == 4 then
player.PlayerGui.ScreenGui.CollectTofy.Visible = true
workspace.Tofy:PivotTo(CFrame.new(2.067, 4.286, 229.434))
end
end)
此段程式碼的作用為: 當此物件被點擊時(物件為一個Part),玩家UI中的一個數值變數將要+1,此物件的透明度變成1(0為不透明、1為完全透明),播放音效,物件的是否可觸碰設為否,物件的是否偵測觸碰設為否,物件的最大點擊範圍設為0(意思就是無法點擊),等待0.1秒,玩家UI中的任務文字變為任務文字加上 ✅,在輸出視窗輸出任務文字的文字(此段非必要)。
然後下方還有一個If判斷式
如果玩家UI中的數值變數的變數值為4,玩家UI中的第五個任務文字顯示,Tofy移動到指定CFrame座標。
名詞解釋
print() 輸出變數值(相信大家都很了解這在幹嘛,每種程式語言都有這東西)
MaxActivationDistance 最大點擊範圍(此屬性僅ClickDetector才有,這個物件是可以讓自己的母項有點擊功能)
MouseClick 判斷玩家是否點擊此物件的事件(此屬性僅ClickDetector才有)
CanCollide 是否可觸碰(這裡指的是物理此物件是否為實體)
.. 字串的相加(例如我要連結字串"我"以及"討厭黑人",可以像這樣: "我" .. "討厭黑人" .. "我開玩笑的我討厭種族歧視的人跟黑人")
以上就是今天的日誌,在公開下去這遊戲就不用玩了www
明天可能不會有日誌,我想休息一下(當然也可能我突然抓到bug也不一定)